// 导航守卫
/*
调用接口获取用户信息
1：定义获取用户信息的api
2:在vuex中定义state,mutations,actions
3:导入api，在actions中调用api获取用户信息并存储
4：在导航守卫中触发调用获取用户信息
*/
// 前置守卫
import router from '@/router'
import store from '@/store' // store===this.$store
// 白名单：不需要登陆就可访问的页面
const pageList = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  /*
  需求：登录了就不能去登录页了，没登陆不能去首页等需要登录的页面
     判断是否有token
          有token
             判断要去的页面是否是登陆页
                  是登陆页
                      跳转到首页
                  不是登陆页
                      正常进入
          没有token
              判断要去的页面是否需要登陆  比如  /login  /404
                  不需要登陆页面
                       正常进入
                  需要登陆的页面
                        跳转到登陆页
*/
  if (store.state.login.token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      if (!store.state.login.userInfo.userId) {
        // 调用actions获取用户信息存储
        await store.dispatch('login/getUserInfo')
      }
      next()
    }
  } else {
    // 要去的页面是  to.path
    // 白名单 pageList
    if (pageList.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login')
    }
  }
})
